<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Access extends CJR_Controller {
	
	// esta funcao redireciona o usuario para a sua respectiva pagina principal,
	// de acordo com os perfis existentes na sua conta.
	public function index() {
		if ($this->session->flashdata('message') || $this->session->flashdata('error')) {
			$this->loadPage('Mensagem temporária', array(
				'access/redirect' => array()
			));
		}
		else if (!$this->session->userdata('id'))
			redirect('access/login');
		else
			redirect('user/index');
	}
	
	// funcao para sobrescrever o erro 404 padrao do CodeIgniter
	public function _404() {
		$message  = 'Permissão negada: Página "';
		$message .= $this->uri->segment(1).'/'.$this->uri->segment(2);
		$message .= '" não cadastrada no sistema.';
		$this->session->set_flashdata('error', $message);
		redirect('access/index');
	}
	
	// pagina de login do sistema.
	public function login() {
		// caso ja esteja logado, redireciona para a home
		if ($this->session->userdata('id'))
			redirect('access/index');
		
		// caso o formulario tenha sido submetido, tenta fazer login
		if (count($_POST)) {
			// carrega o modelo de usuario
			$this->load->model('access_model');
			
			// verifica o login
			$user = NULL;
			$message = $this->access_model->login($_POST['usuario'], $_POST['senha'], $user);
			if (strlen($message)) {
				$this->session->set_flashdata('error', $message);
				redirect('access/login');
			}
			
			$this->session->set_userdata('id', $user->id);
			redirect('access/index');
		}
		
		$this->loadPage('Fazer login', array(
			'access/login' => array()
		));
	}
	
	// esta pagina faz o logout do usuario e redireciona para a home do sistema.
	public function logout() {
		$this->session->sess_destroy();
		redirect('access/index');
	}
	
	// recuperação de senha
	public function recuperarSenha () {
		// caso ja esteja logado, redireciona para a home
		if ($this->session->userdata('id'))
			redirect('access/index');
		
		// caso o formulario tenha sido submetido, tenta fazer login
		if (count($_POST)) {
			// carrega o modelo de usuario
			$this->load->model('access_model');
			
			// verifica o login
			$user = NULL;
			$message = $this->access_model->userExists($_POST['usuario']);
			if (strlen($message)) {
				$this->session->set_flashdata('error', $message);
				redirect('access/recuperarSenha');
			}
			
			redirect('access/recuperarSenha');
		}
		
		// carrega view de recuperação de senha
		$this->loadPage('Recuperar Senha', array(
			'access/recuperarSenha' => array()
		));
	}
}
